// 给定两个字符串 s 和 t ，它们只包含小写字母。

// 字符串 t 由字符串 s 随机重排，然后在随机位置添加一个字母。

// 请找出在 t 中被添加的字母。

// 示例 1：

// 输入：s = "abcd", t = "abcde"
// 输出："e"
// 解释：'e' 是那个被添加的字母。
// 示例 2：

// 输入：s = "", t = "y"
// 输出："y"

// 解法一：容器计数法
char findTheDifference(char* s, char* t) {
    int cnt[26];
    memset(cnt,0,sizeof(cnt)); //使用memset函数将数组cnt清零，变成一个干净的容器
    int n = strlen(s);
    int m = strlen(t);
    for (int i=0;i<n;i++){
        cnt[s[i]-'a']++;   //将每个字符对应的ascll码值与a的ascll码值相减，处理为对应的索引，然后数组对应索引位置加一
    }
    for (int i=0;i<m;i++){
        cnt[t[i]-'a']--; //对应位置减一
        if(cnt[t[i]- 'a'] < 0){ 
        /* 如果cnt对应位置小于0，
        说明同位置的计数值被减光了还差一个或者对应位置本来计数为0，此是的t[i]对应的字母即为多出来的字母
        */
         	return t[i];
       
        }
    }
    return ' ';
}

// 解法二，位运算法

char findTheDifference(char* s, char* t) {
    int n = strlen(s);
    int m = strlen(t);
    int ret = 0;
    for(int i =0; i<n; i++){
        ret^=s[i];
    }
    for(int i=0;i<m;i++){
        ret ^= t[i];
    }
    return ret;
}

// 解法三：将ascll码值加总，通过两个ascll码值的找到多出来的字符

char findTheDifference(char* s, char* t){
	int as = 0;
	int at = 0;
	int n = strlen(s);
	int m = strlen(t);
	for(int i = 0; i < n; i++){
		as += s[i];
	}
	for (int i = 0; i<m;i++){
		at += t[i];
	}

	return at - as;
}













